package com.xinqi.modules.stats.studyanalysis.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xinqi.common.mybatis.data.repo.SuperMapper;
import com.xinqi.modules.stats.content.domain.CourseContentEntity;
import com.xinqi.modules.stats.studyanalysis.domain.CourseAnalysisEntity;
import com.xinqi.modules.stats.studyanalysis.dto.req.StudentAnalysisQueryDTO;
import com.xinqi.modules.stats.studyanalysis.dto.req.StudentInfoAnalysisQueryDTO;
import com.xinqi.modules.stats.studyanalysis.dto.req.StudyAnalysisExportDTO;
import com.xinqi.modules.stats.studyanalysis.dto.rsp.StudentAnalysisContentResultDTO;
import com.xinqi.modules.stats.studyanalysis.dto.rsp.StudentAnalysisHeadResultDTO;
import com.xinqi.modules.stats.studyanalysis.dto.rsp.StudentInfoAnalysisHeadResultDTO;
import com.xinqi.modules.stats.studyanalysis.dto.rsp.StudyAnalysisStatisticsDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface StudyAnalysisMapper extends SuperMapper<CourseContentEntity> {

    StudyAnalysisStatisticsDTO wholeAnalysis(@Param("classId") Long classId);

    StudentAnalysisHeadResultDTO studentAnalysisHead(@Param("classId") Long classId);

    IPage<StudentAnalysisContentResultDTO> studentAnalysisContent(@Param("page") IPage<StudentAnalysisContentResultDTO> page, @Param("queryDTO") StudentAnalysisQueryDTO analysisQueryDTO);

    StudentInfoAnalysisHeadResultDTO studentInfoHeadAnalysis(@Param("queryDTO") StudentInfoAnalysisQueryDTO analysisQueryDTO);

    StudentAnalysisContentResultDTO teacherStudentInfoContentAnalysis(@Param("queryDTO") StudentInfoAnalysisQueryDTO analysisQueryDTO);

    StudentAnalysisContentResultDTO studentInfoContentAnalysis(@Param("queryDTO") StudentInfoAnalysisQueryDTO analysisQueryDTO);

    List<StudentAnalysisContentResultDTO> StudyAnalysisExport(@Param("queryDTO") StudyAnalysisExportDTO exportDTO);

    /**
     * 清空已有的统计信息
     */
    boolean clearCourseAnslysisList();
    /**
     * 重新生成统计信息
     */
    List<CourseAnalysisEntity> courseAnslysisList();

}
